package com.tennet.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间日期处理工具
 * @author   pugang
 * @Date	 2011	2011-4-12		下午10:44:06
 */
public class TimeTooles {
	// 禁止实例化
	private TimeTooles() {
	}

	/**
	 * 返回格式为yyyy-MM-dd HH:mm:ss的时间
	 * @param time 以毫秒为单位的时间
	 * @return 时间 格式 如：2010-10-20 16:26:34
	 */
	public static String getDate(String time) {
		return getDate("yyyy-MM-dd HH:mm:ss", time);
	}

	/**
	 * @param pattern 时间格式 如 yyyy-MM-dd HH:mm:ss
	 * @param time 以毫秒为单位的时间
	 * @return 时间 格式 如：2010-10-20 16:26:34
	 */
	public static String getDate(String pattern, String time) {
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		String theValue = time;
		try {
			theValue = df.format(new Date(Long.parseLong(time)));
		} catch (NumberFormatException e) {
			return time;
		}
		return theValue;
	}

	/**
	 * getFomatString:(按照默认的格式返回日期字符串)
	 *默认的格式：yyyy-MM-dd HH:mm:ss
	 * 2010-12-13
	 * pugang
	 * @param date
	 * @return String
	 * @throws
	 */
	public static String getFomatString(Date date) {
		return getFomatString("yyyy-MM-dd HH:mm:ss", date);
	}

	/**
	 * getFomatString:(按照指定的格式返回日期字符串)
	 * 2010-12-13
	 * pugang
	 * @param date
	 * @return String
	 * @throws
	 */
	public static String getFomatString(String pattern, Date date) {
		if (pattern == null || pattern.isEmpty()) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		String value = null;
		try {
			value = df.format(date);
		} catch (NumberFormatException e) {
			System.out.println("格式化错误");
			value = null;
		}

		return value;

	}

	/**
	 * 解析时间
	 * @param pattern 时间格式
	 * @param time 要解析的时间
	 * @return time生成的Date,如果格式错误则返回null
	 */
	public static Date StringtoDate(String pattern, String time) {
		if (pattern == null || pattern.isEmpty()) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		SimpleDateFormat df = new SimpleDateFormat(pattern);
		Date d = null;
		try {
			d = df.parse(time);
		} catch (ParseException e) {
			System.out.println("格式化错误");
			d = null;
		}

		return d;
	}

	/**
	 * 解析时间
	 * 默认时间格式是 yyyy-MM-dd HH:mm:ss
	 * @param time 要解析的时间
	 * @return time生成的Date,如果格式错误则返回null
	 */
	public static Date StringtoDate(String time) {
		return StringtoDate("yyyy-MM-dd HH:mm:ss", time);
	}

	public static String getCurrentTime() {
		return getCurrentTime("yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * getCurrentTime:(按照指定格式生成当前时间)
	 * TODO(默认格式 yyyy-MM-dd HH:mm:ss)
	 * 2010-11-22
	 * pugang
	 * @param @param pattern
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String getCurrentTime(String pattern) {
		return getDate(pattern, System.currentTimeMillis() + "");
	}

	public static StringBuffer getCurrentDate() {
		StringBuffer currentDate = new StringBuffer();
		Calendar cal = Calendar.getInstance();
		int date = cal.get(Calendar.DAY_OF_MONTH);
		int month = cal.get(Calendar.MONTH) + 1;
		int year = cal.get(Calendar.YEAR);
		currentDate.append(year).append("-").append(month).append("-").append(date);
		return currentDate;
	}

	//	public static void main(String args[]) {
	// System.out.println(TimeTooles.getDate("20101022154634"));
	// System.out.println(TimeTooles.StringtoDate("2010-10-20 17:45:01").getTime());
	// System.out.println(TimeTooles.getDate("yyyy-MM-dd 00:00:00",System.currentTimeMillis()+""));
	//		System.out.println(getCurrentTime()); 
	//		System.out.println(getCurrentDate());
	// TimeZone t = TimeZone.getDefault();
	// System.out.println(t.getID());
	//	}
}
